
import json
from sa_desc import citroen_sa_desc
# from pprint import pprint

def format_vin_ex(extra):
    extra = json.loads(extra)
    except_ = extra.get("except")
    should_ = extra.get("should")
    new_except = list(set(map(lambda x: '不带'+x, except_)))
    should_.extend(new_except)
    extra.pop("except")
    extra.pop("should")
    app_info = list(set(should_))
    extra["app_info"] = app_info
    range = extra.get("range")
    OPR = range.split(" ")[0] if range.split(" ") else ""
    sa = get_sa(app_info)
    filter_rules = {"OPR": OPR, "sa": sa}
    extra["filter_rules"] = filter_rules
    return extra

def get_sa(li):
    _l = set()
    for i in li:
        sa = citroen_sa_desc.get(i, "")
        if sa == '':
            continue
        _l.add(sa)
    return list(_l)

# ex = '''{"range": "13755 UW 2 0094", "psa": "002I", "side": "", "except": ["离合器", "侧向保护条", "内部儿童监视后视镜", "加热器壳体 气体回路", "光盘", "轮胎充气不足检测", "前门槛灯", "发动机下部防护板", "照明驾驶员侧档板+乘客侧档板", "特殊灯", "车门槛照明灯", "电子稳定性程序", "驾驶员+乘客遮光板标牌", "远程通讯单元", "盲点监控", "防盗保护警报", "导航系统", "前侧安全气囊", "前排乘客座椅高度调节", "后部扶手"], "should": ["不带光盘", "差速器84", "侧搁架，无玻璃", "世嘉3厢", "带镀铬饰件的换档杆球形捏手", "精简钢制车轮+非标准轮胎", "16英寸BAIKAL轮", "馈入天线接收器、前/后扬声器", "前点烟器", "前横向稳定杆直径23", "织物 BAOSHI G250 + OMNI REPS G249 7O", "亮黑色 + 与车身同色保护装置", "引起盖隔音件", "不带电子稳定性程序", "EC型发动机", "车灯手动打开", "倾斜驾驶员座椅靠背", "蓄电池L2 400", "不带前门槛灯", "安装 BOSCH", "低/高", "带警报器式预拉伸双座安全带", "底盘同色外把手", "120安培交流发电机", "显示(收音机+时钟、T°、CD)", "驾驶员+前/后乘客标准防挤压座椅", "天窗电动控制", "COUS SEPA RABATTBLE + DOSS SEPA RABATTABLE", "不带前排乘客座椅高度调节", "前排中间扶手", "装备带2个前扬声器+ 2个后扬声器", "金属漆", "3 X 3-点卷筒", "6.5`型轮辋公路车轮", "高级排放标准", "雨刮器,无传感器", "1公插座+USB", "单空调", "乘客侧前排座椅手动控制", "无后雨刷器", "ANTHRA CHEVRONS灰色装饰", "不带侧向保护条", "刻度表KM/H", "无附件插座", "化纤地毯AIGUILLETEE DILOUR F550", "不带防盗保护警报", "8 1 BOSCH ABS", "不带特殊灯", "不带内部儿童监视后视镜", "后雷达障碍物识别器", "不带前侧安全气囊", "轿车", "后抗侧倾杆直径29", "不带后部扶手", "长控制台，带手套箱", "平行驱动器高度调整", "音频/视频RDS系统RD8 MP3", "雪铁龙", "无附加徽章", "散热器厚度:27 - 21 DM2铜焊铝制", "1600 CM3", "数字仪表盘LION灰前面板", "手动驾驶员前座椅", "FR", "CP 20 X 73", "带ABS制动器", "不带发动机下部防护板", "无铅汽油", "简单+自动中央门锁", "7 KG 隔音板", "KHR - 展示红漆", "前雾灯", "乘客电动车门后视镜", "3位置前礼貌灯", "不带远程通讯单元", "乘客侧标准电动前玻璃升降器", "白天-夜晚内部后视镜 非电镀铬", "金属装饰", "不带轮胎充气不足检测", "标准储物舱", "非加热座椅", "装备2后头枕", "4门轿车", "不带照明驾驶员侧档板+乘客侧档板", "遥控手动大灯调整", "车辆符合欧5排放标准", "不带车门槛照明灯", "车外后视镜手动折回", "喷射", "EC5 喷射", "欧5排放控制(发动机)", "通风前盘/后盘", "后电动车窗+锁止", "司机搁脚板", "定速和限速调节器", "无音响遥控器", "不带离合器", "无排气管装饰罩", "标准踏板", "卤素灯泡", "4速自动变速箱", "灰尘环境", "不带导航系统", "内置天线", "方向盘左置", "1风扇2速130W", "不带加热器壳体 气体回路", "自动变速箱AT8", "液压助力转向", "橡胶方向盘, 2辐条", "BSI发展", "行李架", "软性仪表板灰色MISTRAL装饰", "1高频遥控钥匙+1副钥匙", "起动机类别3", "非加强型轮胎 205/55 R16 91V", "系列促销", "和声喇叭", "变速箱上的水/油交换器", "夹层挡风玻璃+侧车窗和后钢化玻璃", "驾驶员+乘客遮光板不带标牌", "不带盲点监控", "标准内部装备装饰", "合金车轮总成1", "车轮安装16英寸", "非加热车门后视镜"]}'''
# pprint(format_vin_ex(ex))
